package top.ddandang.blog.service;

import top.ddandang.blog.model.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author D
 * @since 2020-06-23
 */
public interface UserService extends IService<User> {

    /**
     * 根据账号获取用户信息
     * @param username 账号
     * @return 用户信息
     */
    User getUser(String username);

    /**
     * 新增用户
     * @param nickname 用户昵称
     * @param username 用户名
     * @param password 用户密码
     * @param passwordCheck 确认密码
     * @return 是否增加成功
     */
    int insertUser(String nickname, String username, String password, String passwordCheck);


    /**
     * 登录成功生成一个token ,并存在redis中
     * @param user 用户信息
     * @return token字符串
     */
    String createToken(User user);

    /**
     * 用户上传头像
     * @param file 头像
     * @return 头像地址
     */
    String upLoadUserAvatar(MultipartFile file);

    /**
     * 更新用户的头像
     * @param url 用户头像地址
     * @param username 账号
     */
    void updateUserAvatar(String url, String username);

    /**
     * 更新用户的昵称
     * @param nickname 用户昵称
     * @param username 用户账号
     * @return 影响行数
     */
    int updateNickname(String nickname, String username);

    /**
     * 判断的密码舒服正确
     * @param oldPassword 旧密码
     * @param username 账号
     * @return 密码是否正确
     */
    Boolean judgePassword(String oldPassword, String username);

    /**
     *  修改用户密码
     * @param password 用户新密码
     * @param username 用户账号
     * @return 影响行数
     */
    int updatePassword(String password, String username);

    /**
     * 退出登录 删除缓存中的token
     * @param userId 用户id
     */
    void logOut(Integer userId);

    /**
     * 获取用户的数量
     * @return 用户的数量
     */
    int getUserAmount();
}
